#!/bin/bash
# Implementacion dummy del comando glog para seguir desarrollando el resto de las funciones.
#echo $1 $2 $3 
#GRUPO=`pwd`
#LOGDIR="$GRUPO/log"
#LOGDIR="../log"
#LOGEXT="txt"
#LOGSIZE="1024"
#CONFDIR="$GRUPO/conf"
#CONFDIR="$GRUPO/conf"

#Valido parametros
function validar_cant_param(){	

	if [ $1 -ne 3 ]
	then
		echo "Error, la catidad de paramtros es incorrecta"
	exit 1;

	fi
}

#Valido el tipo de mensaje 
function que_tipo_mensaje(){

	case $1 in
		I)
		mensaje="INFORMATIVO"
		;;
		W)
		mensaje="WARNING"
		;;
		E)
		mensaje="ERROR"
		;;
		SE)
		mensaje="SEVERAL ERROR"
		;;
		*)
		echo "Error tipo de mensaje invalido"
		exit 2;
		;;
esac;
}

#Crea el directorio
function crear_direct(){

	if [ $1 = "INSTALAR_TP" ]
	then
		crear_direct_log "$CONFDIR"
	else
		crear_direct_log "$LOGDIR"
	fi
}

#Verifico si existe el archivo log, sino lo creo
function crear_direct_log(){
	
	if [ ! -d "$1" ]
	then
		mkdir -m 755 -p "$1"
	fi
}

#verifica si ya existe el archivo de log, y si no existe lo crea. 
#$1=nombre $2=LOGDIR o CONFDIR
function crear_arch(){

	file="$2/$1"
	if [ ! -f "$file" ]
	then
		touch "$2/$1"
	fi
}	

#Define nombre y crea archivo de log. Si es el comando instalar lo crea en CONF y si es otro lo crea en la
#carpeta log
function nombre_crear_arch(){
	if [ "$1" = "INSTALAR_TP" ]
	then
		nombre=`echo "$1" | tr [:lower:] [:upper:]`
		nombre1="$nombre.log"
		
		crear_arch "$nombre1" "$CONFDIR"
	else
		nombre=`echo "$1" | tr [:lower:] [:upper:]`
		nombre1="$nombre.$LOGEXT"	
		
		crear_arch "$nombre1" "$LOGDIR"
	fi	
}


	
function escribir_arch(){

fecha=`date "+%d-%m-%Y %H:%M:%S"`
echo "$fecha $USER El comando: $nombre tiene un error del tipo: $mensaje causado por: $texto_mensaje " >> "$file"

}

#Si el tamaño del archivo log supera la cantidad maxima
#vamos a truncarlo , borrando la primer mitad de su contenido

function tam_log(){
	if [ $nombre != "INSTALAR_TP" ]
	then
		cant_lineas_arch=`cat $file | wc -l`
		tam_arch=`stat -c %s $file`

		if [ "$tam_arch" -ge "$LOGSIZE" ]
		then
	
			lineas_arch_new=`expr $cant_lineas_arch / 2`
			lineas_arch_new=`expr $lineas_arch_new + 2`
			sed -i '1,'$lineas_arch_new'd' "$file"
		
	
			echo "Log excedido" >> "$file"
		fi
		
	fi
}


tipo_mens=`echo "$2" | tr [:lower:] [:upper:]`
comando=`echo "$1" | tr [:lower:] [:upper:]`
texto_mensaje=`echo "$3" | tr [:lower:] [:upper:]`

validar_cant_param $#
que_tipo_mensaje "$tipo_mens"
crear_direct "$comando"
nombre_crear_arch "$comando"
escribir_arch 

tam_log











